Semana 4 (Semestre 2)

Me desvié de las indicaciones y usé velocity verlet para poder simular velocidades, posiciones y aceleraciones. Utilizando la fórmula de fuerza elástica, de momento solo he podido simular 2 partículas que rebotan entre sí. Con una constante elástica de k y una distancia d igual a 2, esta es la animación.
particle_simulation.gif

Agregando viscocidad de 0.1 proporcional a la velocidad. Esto cambió así. Donde podemos ver que llega un momento que dejan de oscilar o bien es mínima.
particle_simulation-viscocity.gif
Antes de pasar a la fuerza para crear un angulo entre 3 partículas, debo crear una automatización para crear los bonds automáticamente dependiendo del número de partículas, y esta crearla en una función aparte, para poder implementar más fácilmente las cosas.

Estuve tieniendo muchos problemas para hacer paredes periodicas, asi que de momento usare paredes fijas con un potencial lenard jones. Lo cual de momento funciona.

Diseno automatico de cadenas

Cree una funcion que crea cadenas y las posiciona dependiendo el numero de cadenas y particulas independientemente. Pero es bastante sencillo, ya que se crea a partir del centro.
Se necesita una entrada en forma de Array, como esta [2, 3, 6], donde cada elemento es un bond y cada dato es el numero de particulas de cada bond.
Un array asi, nos muestra algo como esto.
Pasted image 20240831192255.png

Despues de demasiadas horas tratando de calcular las fuerzas elasticas independientemente de cada bond, se logro. Aunque creo todavia hay algo extrano porque a bajas viscocidades, estamos hablando de 0.1 aproximadamente, la oscilacion no cede despues de 40 segundos. Pero con una viscocidad de 0.7 este es el resultado. Este comportamiento es a una distancia de 3.

particle_simulation_3.gif

Pero hay un aspecto muy importante en esto, y es las fuerzas de las paredes. Al principio intente hacerlas periodicas pero me di cuenta de lo complicado que me resultaria de momento implementarlo (Lo cual en un futuro lo hare), asi que cree paredes estaticas. Las cuales a pesar de que tenia la nocion de como hacerlo, se me complico demasiado (Sorpresa, como todo), pero al final fue un sucio signo. Pero al poner unos parametros curiosos, (este siendo de una distancia de bond de 4.9) esto se comporta asi.
particle_simulation_4.gif
Lo que se me hace muy interesante del comportamiento, es que las particulas verdes, al no tener el sufieciente espacio horizontal estas optan por girar y asi obtener la distancia que necesitan para estar en reposo. SI, TODAVÍA FALTA AGREGAR INTERACCIONES ENTRE CADA CADENA :(

Fuerza angular armónica.

Para esta parte me encuentro con una gran dificultad. Sabemos que la energía para un potencial angular armónico esta esta formula.
Lo cual en vista es bonito, tranquilo, sin problema. Pero se sabe que la fuerza esta dada por el gradiente negativo de la energía.
Este potencial depende de 3 partículas. Hay de dos sopas.
Podemos hacer que equivalga a los angulos que forma la particula central entre las otras dos, o podemos hacer que el dependa de las distancias de cada particula.

Si hacemos que dependa de los angulos, tendriamos una energia parecido a esto.
Donde si derivamos, necesitariamos la velocidad angular de las particulas, las cuales no tenemos, y esto puede agregar un poco mas de dificultad.

Asi que, si hacemos que dependa de las distancias podemos obtener algo asi:
Lo cual nos evita lidiar con derivadas de angulos, mi pregunta aqui es: Debido a que esta ecuacion depende de 2 vectores, El gradiente se debe calcular para ambos vectores?